///////////////////////////////////////////////////////////////////////////////////////////////////
/// \file mpi_functions.cpp
///
/// \brief   definitions of mpi related functions
///
///////////////////////////////////////////////////////////////////////////////////////////////////

#include <src/pcps.h>
#include <src/mpi_functions.h>

#include <unistd.h> // needed for gethostname

///////////////////////////////////////////////////////////////////////////////////////////////////
/// \brief   function to return the hostname for this process
///
/// \return the hostname as given by gethostname
///
///////////////////////////////////////////////////////////////////////////////////////////////////

std::string pcps::mpi::get_hostname() {

  // allocate vector to hold the character string
  std::vector<char> hostname_vec(1024);

  // load the hostname into the character string
  const int rc = gethostname(&hostname_vec.at(0), 1000);
  if (rc != 0)
    throw pcps::Exception("gethostname failed in pcps::mpi::get_hostname with error code %i") % rc;

  // return the hostname
  return std::string(&hostname_vec.at(0));

}
